#ifndef wm_stacking_h
#define wm_stacking_h
/*
 * Sylvain BERTRAND <digital.ragnarok@gmail.com>
 * code protected by GNU GPL v3
 */
struct wm_client;
enum wm_stacking_layer {
	WM_STACKING_LAYER_INVALID,
	WM_STACKING_LAYER_DESKTOP,
	WM_STACKING_LAYER_BELOW,
	WM_STACKING_LAYER_NORMAL,
	WM_STACKING_LAYER_ABOVE,
	WM_STACKING_LAYER_FULLSCREEN,
	WM_STACKING_LAYER_INTERNAL,
	WM_NUM_STACKING_LAYERS
};
extern GList *stacking_list;
void stacking_add(struct wm_window *win);
void stacking_add_nonintrusive(struct wm_window *win);
#define stacking_remove(win) stacking_list = g_list_remove(stacking_list, win);
void stacking_raise(struct wm_window *window);
void stacking_temp_raise(struct wm_window *window);
void stacking_restore(void);
void stacking_lower(struct wm_window *window);
gboolean stacking_restack_request(struct wm_client *client, struct wm_client *sibling, gint detail);
#endif
